package com.cqie.tes.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cqie.tes.comm.R;
import com.cqie.tes.comm.qo.BaseQo;
import com.cqie.tes.comm.service.impl.BaseServiceImpl;
import com.cqie.tes.domain.Course;
import com.cqie.tes.domain.Evalutetarget;
import com.cqie.tes.domain.Evalutetask;
import com.cqie.tes.domain.Evalutetype;
import com.cqie.tes.domain.qo.tes.EvalutetargetQo;
import com.cqie.tes.domain.qo.tes.EvalutetaskQo;
import com.cqie.tes.domain.vo.tes.course.CourseOptionVo;
import com.cqie.tes.domain.vo.tes.evalutetarget.EvalutetargetVo;
import com.cqie.tes.domain.vo.tes.evalutetask.EvalutetaskOptionVo;
import com.cqie.tes.domain.vo.tes.evalutetask.EvalutetaskVo;
import com.cqie.tes.mapper.EvalutetargetMapper;
import com.cqie.tes.mapper.EvalutetaskMapper;
import com.cqie.tes.mapper.EvalutetypeMapper;
import com.cqie.tes.service.EvalutetaskService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author DD-GKD
 * @since 2020-09-18
 */
@Service
public class EvalutetaskServiceImpl extends BaseServiceImpl<EvalutetaskMapper, Evalutetask> implements EvalutetaskService {

    @Autowired
    private EvalutetaskMapper evalutetaskMapper;

    @Override
    public R getList(BaseQo query) {
        EvalutetaskQo qo = (EvalutetaskQo) query;

        List<EvalutetaskVo> voList = new ArrayList<>();
        QueryWrapper<Evalutetask> fqw = new QueryWrapper<>();
        fqw.eq("mark", 1);
        fqw.orderByAsc("id");

        List<Evalutetask> entityList = evalutetaskMapper.selectList(fqw);

        entityList.forEach(entity -> {
            EvalutetaskVo vo = new EvalutetaskVo();
            BeanUtils.copyProperties(entity,vo);
            Date now = new Date();

            if (now.getTime() < vo.getStart().getTime()){
                vo.setCheckStatusName("未开始");
            }else if(now.getTime() > vo.getEnd().getTime()){
                vo.setCheckStatusName("已结束");
            }else {
                vo.setCheckStatusName("进行中");
            }
            voList.add(vo);
        });

        return R.ok().message("查询成功").data("total", voList.size()).data("rows", voList);
    }


    @Override
    public R edit(Evalutetask entity) {
        return super.edit(entity);
    }

    @Override
    public R deleteById(Integer id) {
        if (id == null || id == 0) {
            return R.error().message("记录ID不能为空");
        }
        Evalutetask entity = this.getById(id);
        if (entity == null) {
            return R.error().message("记录不存在");
        }
        return super.delete(entity);
    }


    @Override
    public R optionList() {
        // 结果列表
        List<EvalutetaskOptionVo> vos  =new ArrayList<>();

        QueryWrapper<Evalutetask> qw = new QueryWrapper<>();
        qw.eq("mark", 1);
        qw.orderByAsc("id");

        List<Evalutetask> entityList = evalutetaskMapper.selectList(qw);
        entityList.forEach(entity->{
            EvalutetaskOptionVo vo = new EvalutetaskOptionVo();
            BeanUtils.copyProperties(entity,vo);
            vos.add(vo);
        });
        return R.ok().message("查询成功").data("options", vos);
    }

    // TODO 未实现 模拟 ==> uid = 39
    @Override
    public R optionListByUid() {
        // 结果列表
        List<EvalutetaskOptionVo> vos  =new ArrayList<>();

        QueryWrapper<Evalutetask> qw = new QueryWrapper<>();
        qw.eq("mark", 1);
        qw.orderByAsc("id");

        List<Evalutetask> entityList = evalutetaskMapper.selectList(qw);
        entityList.forEach(entity->{
            EvalutetaskOptionVo vo = new EvalutetaskOptionVo();
            BeanUtils.copyProperties(entity,vo);
            vos.add(vo);
        });
        return R.ok().message("查询成功").data("options", vos);
    }

}
